package com.Questions.DP;


/**
 * 不同路径
 */
public class leetcode63 {
    public int uniquePathsWithObstacles(int[][] obstacleGrid) {
        int row=obstacleGrid.length;
        int col=obstacleGrid[0].length;
        int[][] dp=new int[row][col];
        // 在第一行和第一列中 如果 遇到了障碍物 那么后面的结点必然不能通过
        // 使用一个整形变量来存储是否遇到了 障碍
        int Iswall=1;
        for(int i=0;i<row;++i){
            if(obstacleGrid[i][0]==1){
                Iswall=0;
            }
            dp[i][0]=Iswall;
        }
        Iswall=1;
        for(int j=0;j<col;++j){
            if(obstacleGrid[0][j]==1){
                Iswall=0;
            }
            dp[0][j]=Iswall;
        }
        for(int i=1;i<row;++i){
            for(int j=1;j<col;++j){
                if(obstacleGrid[i][j]==1){
                    dp[i][j]=0;
                }else{
                    dp[i][j]=dp[i-1][j]+dp[i][j-1];
                }
            }
        }
        return dp[row-1][col-1];
    }
}
